package com.zjitc.token;

import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * Create by IntelliJ IDEA
 *
 * @author: jsonor
 * @date-Time: 2018/4/2 13:48
 * @description:
 *
 *
 * 缓存：
 * 将token存入到对应在一个map中，然后这个缓存会设500ms进行一次扫描，如果发现有存储的token内容，时间超过了
 * 1是，则需要删除这个数据
 * 1.存入token的时候，需要附加内容（时间）
 *   value:
 *      1.token
 *      2.时间
 * 2. 可以：
 */

public class Cache {
  private Map<String,Token> tokens=new HashMap<>();

  public void add(String username,String uuid){
    tokens.put(username,new Token(uuid, LocalDateTime.now()));
  }

  public Token get(String username){
    return tokens.get(username); //返回null过期了
  }
  public Set<Entry<String, Token>> getAllToken() {
    return tokens.entrySet();
  }

  /**
   * 如何使用多线程，在后台一直对cache进行扫描
   */
 public static void main(String[] args) {
   Cache cache = new Cache();
   cache.add("a", "a");
   cache.add("b", "b");
   cache.add("c", "c");

   ExecutorService executor = Executors.newCachedThreadPool();

   //executor.submit(()->{
   //  while (true) {
   //    try {
   //      Thread.sleep(1000);
   //    } catch (InterruptedException e) {
   //      e.printStackTrace();
   //    }
   //    System.out.println(LocalDateTime.now());
   //
   //    //检查在Cache中，是否有数据过期，如果有，则将其打印出来
   //    Set<Entry<String, Token>> sets = cache.getAllToken();
   //
   //
   //  }
 }
}

